Deploy on Genie Cloud

Star us on GitHub

Feature-rich, so you can build anything.

Build any web products with confidence.
Whether it's a data app, a production system or an API - Genie has you covered.

1

Reactive apps

module App
using GenieFramework
@genietools

function count_vowels(message)
   sum([c ['a', 'e', 'i', 'o', 'u'] for c in lowercase(message)])
end

@app begin
   @in message = ""
   @out vowels = 0
   @onchange message begin
       vowels = count_vowels(message)
   end
end
@page("/", "app.jl.html")
end
<div>
       <q-input v-model="message"/>
        <p> The message is: {{message}}</p>
        <p> Vowel count: {{vowels}}</p>
</div>
2

APIs

function predict()
   house = data[params(:id), 1:13]
   json("MEDV" => model(house))
end

@swagger """
/api/predict/{id}:
 get:
   description: Predict the MEDV of a house.
   parameters:
     - in: path
       name: id
       required: true
       description: Numeric ID of the house to get the prediction.
       schema:
          type: integer
"""
route("/api/predict/:id::Int", predict, method=GET)

ui() = render_swagger(swagger_document)
@page("/", ui)
3

Template engine

<h1>Bill Gates' top $(length(books)) recommended books</h1>
<ul>
   <% for_each(books) do book %>
          <li>$(book.title) by $(book.author)</li>
   <% end %>
</ul>
4

Databases

using SearchLight
using SearchLightSQLite
include("app/resources/houses/Houses.jl")
using .Houses

SearchLight.Configuration.load() |> SearchLight.connect

h = House(street="Barcelona", size=200, rooms=nothing)
save(h)
find(House, SQLWhereExpression("size == ?", 200))
5

Authentication

class _EEIconState extends EEState<EEIcon> {
 ui.Image? _image;
 bool _hasErrored = false;
 ImageStream? _imageStream;


 ImageStreamListener get _imageListener => ImageStreamListener(
       (info, call) {
         if (!mounted) return;
         setState(() => _loadImage(info));
       },
       onError: (obj, stackTrack) {
         if (!mounted) return;
         setState(_unloadImage);
       },
     );  

@override

 void eeInitState(EEContext eeContext) {
   super.eeInitState(eeContext);
   _initImageProvider();
 }  

@override
1

Webserver

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the
2

Router

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the
3

Template engine

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the
4

Low-code UI

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the
5

APIs

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the
module App
using GenieFramework
@genietools

function count_vowels(message)
   sum([c ['a', 'e', 'i', 'o', 'u'] for c in lowercase(message)])
end

@app begin
   @in message = ""
   @out vowels = 0
   @onchange message begin
       vowels = count_vowels(message)
   end
end
@page("/", "app.jl.html")
end
<div>
       <q-input v-model="message"/>
        <p> The message is: {{message}}</p>
        <p> Vowel count: {{vowels}}</p>
</div>
function predict()
   house = data[params(:id), 1:13]
   json("MEDV" => model(house))
end

@swagger """
/api/predict/{id}:
 get:
   description: Predict the MEDV of a house.
   parameters:
     - in: path
       name: id
       required: true
       description: Numeric ID of the house to get the prediction.
       schema:
          type: integer
"""
route("/api/predict/:id::Int", predict, method=GET)

ui() = render_swagger(swagger_document)
@page("/", ui)
<h1>Bill Gates' top $(length(books)) recommended books</h1>
<ul>
   <% for_each(books) do book %>
          <li>$(book.title) by $(book.author)</li>
   <% end %>
</ul>
using SearchLight
using SearchLightSQLite
include("app/resources/houses/Houses.jl")
using .Houses

SearchLight.Configuration.load() |> SearchLight.connect

h = House(street="Barcelona", size=200, rooms=nothing)
save(h)
find(House, SQLWhereExpression("size == ?", 200))
class _EEIconState extends EEState<EEIcon> {
 ui.Image? _image;
 bool _hasErrored = false;
 ImageStream? _imageStream;


 ImageStreamListener get _imageListener => ImageStreamListener(
       (info, call) {
         if (!mounted) return;
         setState(() => _loadImage(info));
       },
       onError: (obj, stackTrack) {
         if (!mounted) return;
         setState(_unloadImage);
       },
     );  

@override

 void eeInitState(EEContext eeContext) {
   super.eeInitState(eeContext);
   _initImageProvider();
 }  

@override

Full-stack doesn't mean hard.

Genie provides higher level APIs, low-code and no-code tools that make development easy and productive for expert users and beginners alike.

1

Webserver

2

Router

3

Template engine

4

Low-code UI

5

APIs

1

Webserver

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the
2

Router

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the
3

Template engine

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the
4

Low-code UI

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the
5

APIs

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the

Deploy your apps in one click with Genie Cloud

Genie Cloud is a low/no-code platform to quickly build and deploy your Genie apps.
All without worrying about frontend code, server stack, or hosting.

1

Add your Julia code

Add your Julia code & load your data via the code editor. Define the app logic with simple macros.

2

Build your app visually with Genie Builder

Use our no-code builder to drag & drop 60+ UI elements onto a canvas, including plots and other web components.

3

Deploy in one click

Publish your app and share it.

Learn More

Deploy your apps in one click with Genie Cloud

Genie Cloud is a low/no-code platform to quickly build and deploy your Genie apps.
All without worrying about frontend code, server stack, or hosting.

Learn More

Stay up to date